In this script, there is conducted the estimation for the measure_marginal approach for a single given env.

The env = erigon, the programs file =pg_marginal_full5_c50_step5_shuffle.csv, the resutls file = results_erigon_marginal_full5_c50_step5.csv.

Switch removed_outliers to FALSE to see the comparison.

if (!removed_outliers) {
  boxplot(measurements[which(measurements$env == env), 'measure_total_time_ns'] ~ measurements[which(measurements$env == env), 'opcode'], las=2, outline=TRUE, log='y', main=paste(env, 'all'))
}
if (removed_outliers) {
  measurements = remove_compare_outliers(measurements, 'measure_total_time_ns', c(env))
}

Every sample starts with a fresh evm instance. We investigate whether the results may depend on the time from evm start - related to run_id. To avoid being overrun by the number of images, all op_count for a given run_id are are placed, so values are not centered. That should not be an issue.

Now we can investigate the linear regressions.

for (opcode in all_opcodes) {
  estimate = compute_all(opcode=opcode, env=env, use_median=TRUE, plots=ifelse(details,'all','scatter'))
  estimates[nrow(estimates) + 1, ] = c(opcode, estimate, env)
}

estimates
##                 op estimate_marginal_ns estimate_marginal_ns_stderr    env
## 1              ADD             4.765455                   0.6720578 erigon
## 2              MUL             8.574545                   0.4899707 erigon
## 3              SUB             5.094545                   0.4566219 erigon
## 4              DIV             6.689091                   0.8180334 erigon
## 5             SDIV             7.318182                   0.8226890 erigon
## 6              MOD             6.631818                   0.9361584 erigon
## 7             SMOD             9.086364                   0.5366388 erigon
## 8           ADDMOD            11.066364                   0.6685710 erigon
## 9           MULMOD            23.742727                   0.8185976 erigon
## 10             EXP            33.283636                   0.8052352 erigon
## 11      SIGNEXTEND            12.998182                   0.7519376 erigon
## 12              LT             5.329091                   0.3937034 erigon
## 13              GT             5.884545                   0.8205292 erigon
## 14             SLT             6.003636                   0.6727862 erigon
## 15             SGT             6.521818                   0.5694345 erigon
## 16              EQ             4.271818                   0.7628109 erigon
## 17          ISZERO             4.740909                   0.6805399 erigon
## 18             AND             4.652727                   0.6004510 erigon
## 19              OR             5.430000                   0.5776199 erigon
## 20             XOR             5.391818                   1.0535985 erigon
## 21             NOT             3.842727                   0.7624155 erigon
## 22            BYTE             6.284545                   0.9224668 erigon
## 23             SHL            10.242727                   0.5228947 erigon
## 24             SHR            10.128182                   0.7348119 erigon
## 25             SAR            10.263636                   0.6568087 erigon
## 26         ADDRESS            11.261818                   0.7233262 erigon
## 27          ORIGIN             7.808182                   0.5529800 erigon
## 28          CALLER            11.025455                   0.5427438 erigon
## 29       CALLVALUE             3.728182                   0.3648992 erigon
## 30    CALLDATALOAD            27.060000                   1.2480775 erigon
## 31    CALLDATASIZE             4.513636                   0.6298042 erigon
## 32    CALLDATACOPY            30.986364                   0.6660641 erigon
## 33        CODESIZE             5.098182                   0.6393075 erigon
## 34        CODECOPY            18.420000                   1.5946512 erigon
## 35        GASPRICE             4.594545                   0.6916108 erigon
## 36  RETURNDATASIZE             5.099091                   0.5075445 erigon
## 37  RETURNDATACOPY            58.960000                  16.3739590 erigon
## 38        COINBASE             8.227273                   0.5847276 erigon
## 39       TIMESTAMP             5.845455                   0.6211219 erigon
## 40          NUMBER             4.633636                   0.5844834 erigon
## 41      DIFFICULTY             5.729091                   0.4463911 erigon
## 42        GASLIMIT             4.469091                   0.6449681 erigon
## 43         CHAINID             5.700000                   0.6932867 erigon
## 44     SELFBALANCE            21.417273                   0.5153635 erigon
## 45             POP             4.166364                   0.1918665 erigon
## 46           MLOAD             8.808182                   1.2443414 erigon
## 47          MSTORE            46.238182                   1.7312017 erigon
## 48         MSTORE8             9.293636                   1.0609623 erigon
## 49            JUMP            18.937273                   3.0046725 erigon
## 50           JUMPI            26.612727                   4.8225399 erigon
## 51              PC             5.042727                   0.7542516 erigon
## 52           MSIZE             5.267273                   0.5513323 erigon
## 53             GAS             5.610000                   0.5919788 erigon
## 54        JUMPDEST             3.598182                   0.9730659 erigon
## 55           PUSH1             5.169091                   0.6766202 erigon
## 56           PUSH2             8.135455                   0.8107167 erigon
## 57           PUSH3             9.915455                   0.4838390 erigon
## 58           PUSH4             9.111818                   0.5840653 erigon
## 59           PUSH5             7.655455                   0.6024604 erigon
## 60           PUSH6             9.083636                   0.5391978 erigon
## 61           PUSH7             9.549091                   0.4074697 erigon
## 62           PUSH8             8.565455                   0.6361801 erigon
## 63           PUSH9             8.896364                   0.4362420 erigon
## 64          PUSH10             7.712727                   0.4659995 erigon
## 65          PUSH11             8.609091                   0.5779591 erigon
## 66          PUSH12             7.711818                   0.9139060 erigon
## 67          PUSH13             8.717273                   0.3818974 erigon
## 68          PUSH14             8.863636                   0.6690989 erigon
## 69          PUSH15             8.790000                   0.5641606 erigon
## 70          PUSH16             8.391818                   0.4816637 erigon
## 71          PUSH17             9.756364                   0.4264139 erigon
## 72          PUSH18             9.158182                   0.7249828 erigon
## 73          PUSH19             8.384545                   0.5138621 erigon
## 74          PUSH20             8.775455                   0.4436255 erigon
## 75          PUSH21            10.252727                   0.6640525 erigon
## 76          PUSH22             8.653636                   0.6513939 erigon
## 77          PUSH23             8.805455                   0.6753419 erigon
## 78          PUSH24             8.770909                   0.5504115 erigon
## 79          PUSH25             8.282727                   0.3635226 erigon
## 80          PUSH26             7.327273                   0.4535828 erigon
## 81          PUSH27            10.014545                   0.4304997 erigon
## 82          PUSH28             8.320000                   0.7030470 erigon
## 83          PUSH29             9.118182                   0.4017386 erigon
## 84          PUSH30             8.983636                   0.3166625 erigon
## 85          PUSH31             8.763636                   0.9063717 erigon
## 86          PUSH32            10.064545                   0.5626449 erigon
## 87            DUP1             3.508182                   0.3777415 erigon
## 88            DUP2             5.530909                   0.8467311 erigon
## 89            DUP3             4.541818                   0.5423332 erigon
## 90            DUP4             5.110000                   0.7186802 erigon
## 91            DUP5             5.425455                   0.7914892 erigon
## 92            DUP6             5.278182                   0.5279988 erigon
## 93            DUP7             5.746364                   0.5038893 erigon
## 94            DUP8             5.617273                   0.5534763 erigon
## 95            DUP9             4.347273                   0.5420784 erigon
## 96           DUP10             5.330909                   0.5882445 erigon
## 97           DUP11             4.029091                   0.3187954 erigon
## 98           DUP12             6.120909                   0.8614630 erigon
## 99           DUP13             6.599091                   0.7986892 erigon
## 100          DUP14             5.232727                   0.5302861 erigon
## 101          DUP15             4.140909                   0.6698351 erigon
## 102          DUP16             6.059091                   0.7319769 erigon
## 103          SWAP1             6.043636                   0.3560543 erigon
## 104          SWAP2             4.929091                   0.2742777 erigon
## 105          SWAP3             6.154545                   0.3255595 erigon
## 106          SWAP4             4.993636                   0.5961686 erigon
## 107          SWAP5             4.839091                   0.5112195 erigon
## 108          SWAP6             5.885455                   0.7118184 erigon
## 109          SWAP7             6.247273                   0.5083577 erigon
## 110          SWAP8             6.089091                   0.7879578 erigon
## 111          SWAP9             5.046364                   0.4252973 erigon
## 112         SWAP10             5.350909                   0.5368637 erigon
## 113         SWAP11             4.804545                   0.4951217 erigon
## 114         SWAP12             4.861818                   0.5089589 erigon
## 115         SWAP13             5.891818                   0.5306751 erigon
## 116         SWAP14             5.194545                   0.4216832 erigon
## 117         SWAP15             6.648182                   0.3763255 erigon
## 118         SWAP16             5.771818                   0.8807136 erigon
## 119          MCOPY            13.880000                   1.1106570 erigon
## 120          PUSH0             3.484545                   0.5074931 erigon
## 121           SHA3           501.846364                   4.6406532 erigon
## 122           LOG0           231.658182                   2.8481732 erigon
## 123           LOG1           267.120909                   8.0544047 erigon
## 124           LOG2           351.260000                  51.2899205 erigon
## 125           LOG3           412.200000                  42.1076713 erigon
## 126           LOG4           354.060000                  26.8615525 erigon
## 127    EXTCODEHASH            93.050909                   0.8170421 erigon
## 128    EXTCODESIZE            78.094545                   1.5737278 erigon
## 129    EXTCODECOPY            81.749091                   1.8896039 erigon
## 130         CREATE          3317.515455                  22.5728004 erigon
## 131           CALL           441.963636                   5.2950310 erigon
## 132     STATICCALL           387.720909                   4.0635951 erigon
## 133   DELEGATECALL           317.887273                   3.5718271 erigon
## 134         RETURN           263.100000                   4.8358432 erigon
## 135         REVERT           118.030909                   3.5935017 erigon
## 136           STOP            -5.000000                   2.6034800 erigon

The results are exported to ./erigon_marginal_estimated_cost.csv.